import { Callout, Tabs } from "nextra/components";
import UniversalTabs from "@/components/UniversalTabs";
import { Snippet } from "@/components/code";
import { snippets } from "@/lib/generated/snippets";

# Running Tasks

Once you have a running worker, you'll want to run your tasks. Hatchet provides a number of ways of triggering task runs, from which you should select the one(s) that best suit(s) your use case.

1. Tasks can be [run, and have their results waited on](./run-with-results.mdx)
2. Tasks can be [enqueued without waiting for their results ("fire and forget")](./run-no-wait.mdx).
3. Tasks can be run on [cron schedules](./cron-runs.mdx).
4. Tasks can be [triggered by events](./run-on-event.mdx).
5. Tasks can be [scheduled for a later time](./scheduled-runs.mdx).

Each of these methods for triggering tasks have their own uses in different scenarios, and the next few sections will give some examples of each.

These methods can be invoked directly from the workflow definition, or from other services.
